package com.leetcode.August;

import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;

/**
 * @Description: 82. 删除排序链表中的重复元素 II
 *遍历链表:
 * 使用 while 循环遍历链表，直到 cur.next 和 cur.next.next 都不再指向 null。这是因为我们需要比较当前节点的值和下一个节点的值，所以至少需要两个非空的节点才能进行比较。
 * 在循环中，我们定义了一个局部变量 val 来保存 cur.next 的值，以便于后续的比较。
 * 删除重复元素:
 * 如果发现 cur.next.next.val 等于 val，这意味着存在重复的节点。此时进入一个内部的 while 循环，不断将 cur.next 指向下一个节点，直到当前节点的值不再等于 val。
 * 这样做可以跳过所有值为 val 的节点，从而删除重复的节点。
 * @Author: Mr.Fxy
 * @CreateTime: 2024-08-30 09:43
 */
public class LC82删除排序链表中的重复元素II {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode dummy = new ListNode(0, head), cur = dummy;
        while (cur.next != null && cur.next.next != null){
            int val = cur.next.val;
            if (cur.next.next.val == val){
                while (cur.next != null && cur.next.val == val){
                    cur.next=cur.next.next;
                }
            }else {
                cur=cur.next;
            }
        }
        return dummy.next;
    }
}
